#! /bin/bash
# Générateur d'objets et de leur prototypes à partir
# des noms de membres et leur types.
# Fournit le constructeur par défaut, ainsi que les
# getteurs/setteurs par défauts.

touch $1.mli
touch $1.ml
p="$1.mli"
pl="$1.ml"
echo -n "class type $2" >> $p
echo -n "class $2" >> $pl
for (( i=3 ; i<$# ; i++, i++ )) ; do
    echo -n " ${!i}" >> $p
    echo -n " i${!i}" >> $pl
done 
echo " =" | tee -a $p $pl 1> /dev/null
echo "    object" | tee -a $p $pl 1> /dev/null
for (( i=3, j=4 ; j<$# ; i++, i++, j++, j++ )) ; do
    echo "        val mutable ${!i} : ${!j}" >> $p 
    echo "        val mutable ${!i} = i${!i}" >> $pl 
done 
for (( i=3, j=4 ; j<$# ; i++, i++, j++, j++ )) ; do
    echo "        method get_${!i} : ${!j}" >> $p 
    echo "        method get_${!i} = ${!i}" >> $pl
    echo "        method set_${!i} : unit" >> $p 
    echo "        method set_${!i} i${!i} = ${!i} <- i${!i} " >> $pl  
done 
echo "end;;" | tee -a $p $pl 1> /dev/null
